import dict from './dict'
/**
 * 常量字典，用来定义后台没数据或有字典相关判断函数的，key 的名字可以用到 DictXXX 组件的 dict 属性中
 * 注意里面的方法不要用 this，建议用 constDict.icon_type.svgCustom 这样来获取值，而不是 this.svgCustom
 */
export const constDict = {
	/** @description：用户状态 */
	user_status: {
		/* value 如果数据定义在后端弄个空数组就可以了，后端没定义弄个 [{label:"xxx",value:'xxx', color: 'xxx'}] 结构的数据，其中 color 是 tag 组件的 type*/
		value: [
			{ label: '正常', value: 1, type: 'success' },
			{ label: '禁用', value: 0, type: 'danger' }
		],
		/* 工具函数，避免在页面中使用 status === 1 这种魔法值 */
		isNormal(value: string): boolean {
			return value === '1'
		}
	},
	/** @description：用户性别 */
	gender_type: {
		value: [
			{ label: '男', value: 1, type: 'success' },
			{ label: '女', value: 2, type: 'danger' }
		]
	},
	/** @description：icon类型 */
	icon_type: {
		value: [
			{ label: '自定义svg', value: 'svgCustom' },
			{ label: '框架svg', value: 'svgElement' }
		],
		isSvgCustom(value: string): boolean {
			return value === 'svgCustom'
		},
		isSvgElement(value: string): boolean {
			return value === 'svgElement'
		},
		svgCustom: 'svgCustom'
	}
}

/**
 * @description 初始化字典
 */
export function initDict() {
	dict.clearDictCache()
	// 将常量字典注册到缓存中，让缓存中也能用到
	Object.entries(constDict).forEach(([k, v]) => {
		if (v.value && v.value.length) {
			dict.setDict(k, v.value)
		}
	})
}

// 初始化字典
initDict()

export default {
	$cache: dict,
	...constDict
}
